'''
日志的设置 python中的内置库logging
*日志有五种级别：debug info warning error critical
日志的默认级别是warning ,日志的打印是warning error critical
DEBUG
最详细的日志级别，输出程序运行时的内部状态和变量值
主要用于开发阶段的调试和问题诊断
生产环境通常关闭此级别日志

INFO
记录程序正常运行的关键节点信息
用于确认系统按预期工作，如服务启动、配置加载等
适合生产环境的基础监控

WARNING
表示非预期但可恢复的异常情况
例如磁盘空间不足、网络延迟等潜在问题
程序仍能继续运行但需要关注

ERROR
标记功能模块执行失败的重要错误
如数据库连接失败、API调用异常等
需要立即干预但不会导致程序终止

CRITICAL
最高级别，表示系统级致命错误
例如内存溢出、关键服务崩溃等
通常会导致程序不可恢复地终止运行
'''
import logging
import sys

from ranzhiUiTest.caw.readfile import get_protectpath


class Logger:
    def __init__(self):
        # 创建一个日志对象
        self.logger = logging.getLogger()
        # 设置级别
        self.logger.setLevel("INFO")

    # 对日志进行配置
    def console(self,message,levle):
        # 日志在哪里写（文件写日志，在控制台写日志）
        # 处理器：FileHandler StreamHandler
        filepath=get_protectpath()+"\\logs\\"+"log.txt"
        fh = logging.FileHandler(filepath,mode="a",encoding="utf-8")

        # 日志的格式
        formatter = logging.Formatter("[%(asctime)s]-[%(filename)s]-[%(levelname)s]:%(message)s")
        fh.setFormatter(formatter)

        self.logger.addHandler(fh)

        # 控制台日志
        sysh = logging.StreamHandler(sys.stdout)
        sysh.setFormatter(formatter)
        self.logger.addHandler(sysh)

        if levle=="debug":
            self.logger.debug(message)
        elif levle=="info":
            self.logger.info(message)
        elif levle=="warning":
            self.logger.warning(message)
        elif levle=="error":
            self.logger.error(message)
        elif levle=="critical":
            self.logger.critical(message)

        # 为了避免重复打印日志，要移除处理器
        self.logger.removeHandler(fh)
        self.logger.removeHandler(sysh)

        # 关闭处理器
        fh.close()

    def debug(self,message):
        self.console(message,"debug")

    def info(self,message):
        self.console(message,"info")

    def warning(self,message):
        self.console(message,"warning")

    def error(self,message):
        self.console(message,"error")

    def critical(self,message):
        self.console(message,"critical")





    # 写日志  写的日志内容，日志的级别



if __name__ == '__main__':
    logger = Logger()
    logger.debug("this is a debug")
    logger.info("this is a info")
    logger.error("this is a error")


